#!/bin/bash

# 设置颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
BOLD='\033[1m'
LIGHT_GREEN='\033[1;32m'
NC='\033[0m'

# 显示菜单
show_menu() {
    clear
    echo -e "${LIGHT_GREEN}赞助商：MC云 - 4核4G云电脑每月只要4￥ 24小时挂机没有任何问题！${NC}"
    echo -e "${LIGHT_GREEN}https://idc.stay33.cn/act.html${NC}"
    echo -e "===========================MCloud BOT管理命令行==========================="
    echo -e "(1) 启动/重启BOT框架服务              (8) 查看BOT框架日志"
    echo -e "(2) 停止BOT框架服务                   (9) 清理所有日志"
    echo -e "(3) 启动/重启QQ机器人                 (10) 进入BOT框架终端"
    echo -e "(4) 停止QQ机器人                      (11) 进入QQ机器人终端"
    echo -e "(5) 启动/重启微信机器人               (12) 进入微信机器人终端"
    echo -e "(6) 停止微信机器人                    (13) 查看QQ机器人日志"
    echo -e "(7) 一键重启所有服务                  (14) 查看微信机器人日志"
    echo -e "(15) 重新安装框架"
    echo -e "(0) 退出"
    echo -e "======================================================================"
    echo -e "\n请输入命令编号: "
}

# 执行命令并显示结果
execute_command() {
    echo -e "\n${CYAN}执行命令中...${NC}"
    if eval "$1"; then
        echo -e "${GREEN}命令执行成功！${NC}"
    else
        echo -e "${RED}命令执行失败！${NC}"
    fi
    echo -e "\n${YELLOW}按回车键继续...${NC}"
    read -r
}

# 主程序
main() {
    if [ $# -eq 1 ]; then
        choice=$1
    else
        show_menu
        read -r choice
    fi

    case $choice in
        1)
            execute_command "cd /AstrBot && docker compose restart"
            ;;
        2)
            execute_command "cd /AstrBot && docker compose stop"
            ;;
        3)
            execute_command "docker restart napcat"
            ;;
        4)
            execute_command "docker stop napcat"
            ;;
        5)
            execute_command "docker restart gewe"
            ;;
        6)
            execute_command "docker stop gewe"
            ;;
        7)
            echo -e "${CYAN}正在重启所有服务...${NC}"
            cd /AstrBot && docker compose restart
            docker restart napcat
            docker restart gewe
            echo -e "${GREEN}所有服务已重启！${NC}"
            sleep 2
            ;;
        8)
            echo -e "${YELLOW}按 Ctrl+C 退出日志查看${NC}"
            sleep 2
            cd /AstrBot && docker compose logs -f
            ;;
        9)
            echo -e "${YELLOW}正在清理所有服务的日志...${NC}"
            cd /AstrBot && docker compose logs --truncate 0 > /dev/null 2>&1
            docker logs --truncate 0 napcat > /dev/null 2>&1
            docker logs --truncate 0 gewe > /dev/null 2>&1
            echo -e "${GREEN}日志清理完成！${NC}"
            sleep 2
            ;;
        10)
            echo -e "${YELLOW}输入 exit 退出终端${NC}"
            sleep 2
            docker exec -it astrbot /bin/bash || {
                echo -e "${RED}无法进入终端，请确保容器正在运行${NC}"
                sleep 2
            }
            ;;
        11)
            echo -e "${YELLOW}输入 exit 退出终端${NC}"
            sleep 2
            docker exec -it napcat /bin/bash || {
                echo -e "${RED}无法进入终端，请确保容器正在运行${NC}"
                sleep 2
            }
            ;;
        12)
            echo -e "${YELLOW}输入 exit 退出终端${NC}"
            sleep 2
            docker exec -it gewe /bin/bash || {
                echo -e "${RED}无法进入终端，请确保容器正在运行${NC}"
                sleep 2
            }
            ;;
        13)
            echo -e "${YELLOW}按 Ctrl+C 退出日志查看${NC}"
            sleep 2
            docker logs -f napcat
            ;;
        14)
            echo -e "${YELLOW}按 Ctrl+C 退出日志查看${NC}"
            sleep 2
            docker logs -f gewe
            ;;
        15)
            echo -e "${RED}警告：这将重新安装整个框架！${NC}"
            echo -e "${YELLOW}是否继续？[y/N]${NC} "
            read -r confirm
            if [[ $confirm =~ ^[Yy]$ ]]; then
                execute_command "curl -sL https://gitee.com/mc_cloud/mccloud_bot/raw/master/mccloud_install.sh | bash"
            else
                echo -e "${BLUE}已取消重装${NC}"
            fi
            ;;
        0)
            echo -e "${GREEN}感谢使用！再见！${NC}"
            exit 0
            ;;
        *)
            echo -e "${RED}无效的选项！${NC}"
            sleep 2
            ;;
    esac

    if [ $# -eq 0 ]; then
        main
    fi
}

# 检查是否为root用户
if [ "$(id -u)" != "0" ]; then
    echo -e "${RED}错误：请使用 root 用户运行此脚本${NC}"
    exit 1
fi

# 启动主程序
main "$@"
